В жизни любого человека, достаточно долго занимающегося компьютерами, наступает такой момент, когда свежесобранная машина, причем собранная из новых комплектующих, тихо, без истеричных писков берет и не запускается. Как правило, в таком случае вокруг компьютера начинаются пляски с бубном в тщетных попытках найти виновника, но не все так просто, и чаще всего приходится идти к ближайшему знакомому вместе со всей грудой железа, и последовательно тестировать его на заведомо рабочей машине. Кто хоть раз попадал в такую ситуацию, знает, сколько уходит времени и нервов на это неблагодарное дело. И вся эта морока из-за невозможности сразу же точно выявить источник ошибки.
Девайс
Такой неприятной ситуации можно избежать, имея индикатор POST-кодов (Power On Self Test, то есть самотест при включении питания). Он представляет собой маленькую PCI или ISA плату с индикатором. В случае возникновения ошибок во время включения компьютера этот девайс показывает код ошибки, по которому можно легко определить, кто виновник трагедии. В данной статье рассматриваются коды ошибок трех самых распространенных фирм: AWARD, AMI и Phoenix, но на самом деле компаний-разработчиков BIOS’ов намного больше, и у каждой свои коды ошибок. Рассмотреть все типы в данной статье невозможно, поэтому мы остановились на самых распространенных в нашей стране. Большая часть «других» типов BIOS’ов является разработками разных брендов, таких как Сompaq, IBM, Intel и других.
Принцип работы
Теперь разберемся, как же все это хозяйство работает. При включении, как и при холодной перегрузке (reset), компьютер первым делом тестирует все системы, например, процессор, память, видюху, клавиатуру, порты ввода/вывода и.т.д. Перед запуском каждого теста процедура POST генерирует POST-код и выводит его в порт 80h. После этого процедура начинает тест. Если тест не проходит, процесс тестирования просто «зависает», и система останавливается (компьютер, соответственно, не запускается), а информация о последней протестированной системе остается записанной в порт. Генератор POST-кодов читает данные из этого порта, приводит их к доступному виду (шестнадцатеричный код) и выводит на встроенный в него индикатор. Таким образом, можно с большой точностью найти причину неисправности. Индикатор POST-кодов иногда реализован производителем на самой материнской плате и работает по тому же принципу.
Разновидности
Существует достаточно много разновидностей генераторов, функционально они отличаются не существенно, а вот исполнением могут отличаться очень сильно. Пожалуй, наиболее важным отличием продвинутых моделей POST-индикаторов от их дешевых собратьев является возможность настройки диагностического адреса. Дело в том, что во многих «брендовых» компьютерах диагностическая информация может выводится не в порт 80h, а, к примеру, в порт 92h, поэтому дешевый индикатор не является универсальным, впрочем, в наших условиях данный недостаток не критичен.
Так как девайс этот, в принципе, не сложный, многие умельцы собирают его для себя сами, в домашних условиях. Собрать подобное устройство вполне под силу даже начинающему радиолюбителю. Но здесь есть одно «НО» - это разъем PCI, сделать его в домашних условиях практически невозможно, поэтому собирать индикатор самостоятельно нецелесообразно, гораздо проще купить готовый, тем более, стоит он совсем недорого. Также индикатор может быть снабжен разноцветными диодами, индицирующими наличие питания в цепях матплаты (-5В, -12В, +3.3В, +5В, +12В).
Теперь рассмотрим некоторые ошибки, возникающие при тестировании, для разных типов BIOS’ов:
AWARD BIOS
C1 – этот тест осуществляет проверку памяти, при этом определяется ее объем и тип. Остановка процесса тестирования на данном этапе означает либо неисправность памяти, либо контроллера, либо плохой контакт.
С3 – Тестирование первых 256 Кбайт памяти, распаковка в память программы BIOS, проверка контрольных сумм и метки BBSS (Boot Block structure signature). Если метка не обнаружена или контрольные суммы не совпадают, процедура проверки делает вывод о частичном повреждении микропрограмм BIOS.
Возникновение данной ошибки возможно при порче прошивки BIOS, также возможна порча микросхемы ПЗУ.
С6 – Определение типа и объема External Cache-памяти путем записи и чтения.
Данная ошибка возможна при порче кеш-памяти процессора (для современных процессоров). Процессор в морг :).
CF – Определение типа установленного процессора. В случае неудачи останавливается система. Эта ошибка довольно редка, но при ковырянии старого железа есть шанс с ней встретиться.
05 – Тестирование контроллера клавиатуры и запуск оного.
Вполне возможна неисправность контроллера, возможно клавиатуры. Единственное, что можно попробовать сделать, - заменить клавиатуру.
07 – Проверка батарейки CMOS, тест работы CMOS, проверка ячеек CMOS (запись/чтение).
Пожалуй, наиболее часто встречаемая ошибка. Причина чаще всего проста - севшая батарейка. Впрочем, нередки случаи вытекания электролита и разъедания дорожек печатной платы. Если результаты тестирования батарейки не критичны, и даже в случае ее отсутствия компьютер может продолжать работу, то остальные ошибки приведут к останову системы.
BE – Настройка конфигурационных регистров, программирование регистров микросхем Host Bridge. «Зависание» на этом этапе сигнализирует о неисправности чипсета, можно посоветовать только поменять материнскую плату.
0C – Инициализация клавиатуры, установка статуса Num Lock. Остановка на данном этапе означает неисправность клавиатуры. Давно пора купить новую :).
0D – Процедура обнаружения и распознания типа видеокарты. Причина остановки либо плохой контакт, либо сгорание видеокарты. В кривых китайских корпусах видеокарты отходят достаточно часто, так что стоит попробовать переустановить карту в слот.
0F, 10 – Тестирование первого и второго контроллеров DMA. Причиной «зависания» является либо сгорание контроллера, либо глючный девайс, установленный в системе.
30 – Определение объема базовой и расширенной памяти. Ошибки возможны при неисправности некоторых чипов на планке памяти или плохом контакте. Перед тем как забраковывать память, необходимо почистить контакты - это может помочь.
43 - Поиск и тестирование последовательных и параллельных портов ввода/вывода. Причина ошибки – неисправность последних. Может помочь либо ремонт материнской платы, либо ее замена.
FF – Передача управления операционной системе, в процессе передачи управление переходит к загрузчику BOOT сектора, после чего загружается сама операционная система.
AMI BIOS
D1 - Инициализация DMA контроллеров 0 и 1, также запускается самотестирование. Причины ошибок такие же, как и в случае с AWARD BIOS.
D3 - Определение объема и первичное тестирование оперативной памяти, более глубокий тест память проходит позже. Причиной остановки может являться неисправная память либо плохой контакт.
07 – Инициализация процессора. Причиной возникновения ошибок на данном этапе может послужить не только неисправность процессора, но и невозможность определить его CPU ID. Если процессор исправен, может помочь прошивка более свежей версии микропрограммы.
13 – Выполняется процедура инициализации и настройки чипсета. Данный тест различен для разных чипсетов. Остановка тестирования в данном случае указывает на неисправность чипсета, и, скорее всего, придется менять материнскую плату.
Phoenix BIOS
0С – Инициализация и тестирование кеш-памяти первого и второго уровня. Возможная причина остановки POST-теста - порча процессора. В случае если кеш-память второго уровня находится на материнской плате, следует ее протестировать и заменить неисправные микросхемы.
16 - Проверка контрольной суммы BIOS. Остановка теста может быть связана с ошибками чтения микропрограммы. Следует проверить микросхему BIOS и при необходимости заменить.
3D – Настройка чипсета в соответствии с настройками SETUP. Ошибка может возникнуть при неисправностях чипсета и при ошибочных сведениях о настройке. Нужно попробовать сбросить CMOS память.
7с – Процедура установки векторов аппаратных прерываний. Причиной ошибки может быть аппаратный конфликт двух и более устройств. Актуально для случая, когда после установки нового девайса система не запускается.
Вывод
Как видишь, при внутреннем тестировании в процессе запуска системы может возникнуть большое количество ошибок. Здесь приведены лишь некоторые из них. На самом деле ошибок и соответствующих POST-кодов гораздо больше, что позволяет выявить источник проблем с большой точностью, сэкономить время, нервы и даже деньги.